מבוא למדעי המחשב בשפת JAVA חוברת תרגילים... 1

Similar documents
מבוא למדעי המחשב בשפת ++C - חוברת תרגילים

מבוא למדעי המחשב בשפת ++C - חוברת תרגילים

בוחן בתכנות בשפת C בצלחה

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

מבוא לתכנות ב- JAVA תרגול 7

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

למבחן ביסודות מדעי המחשב דוגמא

ASP.Net MVC + Entity Framework Code First.

Practical Session No. 13 Amortized Analysis, Union/Find

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

A R E Y O U R E A L L Y A W A K E?

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

יסודות מבני נתונים. תרגול :9 ערימה - Heap

מבוא למחשב בשפת פייתון

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

במבוא מורחב למדעי המחשב בשפת פייתון

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

מבוא למחשב בשפת Matlab

אוניברסיטת בן גוריון בנגב

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

פרק מיון וחיפוש - לשם מה? הגדרה

2 יחידות לימוד הוראות לנבחן רשו ם "טיוטה" בראש כל עמוד טיוטה. רישום טיוטות כלשהן על דפים שמחוץ למחברת הבחינה עלול לגרום לפסילת הבחינה!

פרק מושגים חדשים שימוש בפונקציות לשם מה?

THINKING ABOUT REST THE ORIGIN OF SHABBOS

מושגים בסיסיים תלמידים והורים יקרים,

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

תרגול 8. Hash Tables

תרגיל בית מספר - 1 להגשה עד 9 בנובמבר בשעה 23:55

אנגלית (MODULE E) בהצלחה!

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

מבחן באנגלית בהצלחה הצלחה!!! שם פרטי: שם משפחה: מס' תעודת זהות: תאריך: שם מרכז מנהל מרכז השכלה: תאריך בדיקת המבחן: כל הזכויות שמורות למשרד החינוך

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

חזרה, מיונים פולינה לוצקר

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

הוראת הדפסה/פלט כשנריץ קובץ זה נקבל ( 6/5/4 מחקו את המיותר( שורות "הדפסה" לדף ה- HTML בשורה 3 יודפס בשורה 6 יודפס

מספר השאלון: הצעת תשובות לשאלות בחינת הבגרות אנגלית (MODULE C) מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי قاموس إنجليزي - إنجليزي - عربي

מבחן מועד ב' אנא קיראו היטב את ההראות שלהלן:

א נ ג ל י ת בהצלחה! ב. משרד החינוך בגרות לנבחנים אקסטרניים )מילון הראפס אנגלי-אנגלי-ערבי( השימוש במילון אחר טעון אישור הפיקוח על הוראת האנגלית.

המבנה הגאומטרי של מידה

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון ב' Corresponds with Module B גרסה ב' הוראות לנבחן

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

תאריך הבחינה: מבוא למדעי המחשב ד "ר פז כרמי פרופ' מייק קודיש ד "ר חן קיסר ד "ר צחי רוזן שם הקורס: מבוא למדעי המחשב מספר הקורס:

7 קרפ תויגול,תויטמתירא תודוקפ הזזהו

Patents Basics. Yehuda Binder. (For copies contact:

תרגול 11 תור עץ חיפוש בינארי

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

עד כה עסקנו בתוכניות שמתקדמות פקודה אחרי פקודה העתק ל- ax את הערך 3 העתק ל- bx את הערך 4 הוסף ל- ax את bx כפול את התוצאה ב- 2 והעתק ל- cx

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

מותאמת לסביבת. Visual C# 2005 Express שונות. ולבצע rename לשם המבוקש

ל"תוכנה" שכותבים, כמו פונקציה זו, קוראים "קוד"

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

בהצלחה מועד א אנא קראו היטב את ההוראות שלהלן: תאריך המבחן: 9/7/2017 המרצים: ד"ר צחי רוזן מר דן בורנשטיין מר ניר גלעד

קורס מטלב לפיסיקאים שיעור מס' 10: משתנים מורכבים

אוניברסיטת בן גוריון בנגב

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

אנגלית שאלון ז' (MODULE G) ג רסה א' הוראות לנבחן )מילון אנגלי-ערבי / ערבי-אנגלי )

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

מותאמת לסביבת. Visual C# 2005 Express שונות. ולבצע rename לשם המבוקש

שאלון ד' הוראות לנבחן

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

שאלון ו' הוראות לנבחן

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

מספר ת"ז: יש לסמן את התשובה הטובה ביותר בתשובון. לא יינתן ניקוד על סימון תשובה בטופס הבחינה או במחברת הבחינה.

מערכים Haim Michael. All Rights Reserved.

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

שאלון ו' הוראות לנבחן

(MODULE E) ב ה צ ל ח ה!

הצעת תשובות לשאלות בחינת הבגרות אנגלית

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

הצגת המשחק תלמידים משחקים סיום. פתיחה 12 min. min. min. min פתיחה. Copyright 2015

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב

יחידה ארגון המחשב ושפת סף: שאלות תרגול

בחינת בגרות, תשע"ז מס' שאלון: מדעי המחשב שאלה 1. Java. blog.csit.org.il הילה קדמן

כפתור רדיו בחירה בודדת מתוך רשימת אפשרויות

עבודה מס' 3: תכנות מונחה עצמים ורשימות

Redirection The Input Buffer

A Long Line for a Shorter Wait at the Supermarket

תרגיל בית מספר - 5 להגשה עד 7 ביוני )יום ראשון( בשעה 32555

sharing food intro price & extra drinks * ניתן להזמין מנות כשרות בתאום מראש for good memories

מדעי המחשב מעבר על הרשימה למציאת המקום המתאים לאיבר. החזרת ה- value של ההפניה למינימום. הנחה: הרשימה לא ריקה.

םימתירוגלאו םינותנ ינבמ המירעו תינס, חמ רות רקצול הנילופ

/ פתיחת החשבון הכרחית רק למרצה / מתרגל ונעשית רק בעת הכניסה הראשונה.

פקס בחיבור המכשיר המשולב לפקס יש לעבור על השלבים הבאים: - חבר את כבל הטלפון לחיבור ה- LINE בגב המדפסת ואת צידו השני לשקע הטלפון בקיר.

Depth-First Search DFS

SPSS 10.0 FOR WINDOWS

מבנה התכנית יסודות מדעי המחשב התכנית הראשונה שלי

Transcription:

מבוא למדעי המחשב בשפת JAVA חוברת תרגילים תוכן עניינים מבוא למדעי המחשב בשפת JAVA חוברת תרגילים... 1 אבני הבניין של השפה... 2 תרגילי תחביר... 3.1.2 משפטי תנאי... 3 א. תרגילי תחביר ב. ג. תרגילי תחביר לולאות... 4 תרגילי תחביר מערכים... 5 ביטויים לוגיים ומשפטי תנאי... 6 לולאות... 9 מערכים ומטריצות... 18 פונקציות... 26 מחרוזות... 34 מיונים וחיפושים... 38 אובייקטים והכלת אובייקטים )וגם קצת קבצים ומיונים(... 4.3.4.5.6.7.8.9.1 רקורסיות... 43

1. אבני הבניין של השפה הקפידו להשתמש בקבועים! כתבו תוכנית הקולטת מהמשתמש רדיו של מעגל ומדפיסה את היקף ואת שטח המעגל. בקפיטריה ניתן להזמין טוסט שמחירו 12 ש"ח..1.2 ניתן לבקש להוסיף תוספות "זולות" )כגון פטריות, זיתים, תירס וכו'(, ומחיר כל תוספת הינו 2 ש"ח נוספים. ניתן לבקש להוסיף תוספות "יקרות" )כגון גבינה בולגרית, אקסטרה גבינהצהובה וכו'(, ומחיר כל תוספת הינו 3 ש"ח נוספים. כמו כן, יתכנו סוגי תוספות זולות או יקרות נוספים שאינם בשאלה. עבור טוסט בתוספת זיתים יש לשלם 14 ש"ח עבור טוסט בתוספת זיתים ופטריות יש לשלם 16 ש"ח עבור טוסט בתוספת זיתים וגבינה בולגרית יש לשלם 17 ש"ח עבור טוסט עם 2 תוספות יקרות ותוספת זולה יש לשלם 2 ש"ח החליטו מהם נתוני התוכנית וכן האם כל נתון הוא קבוע, קלט, חישוב או פלט. כתבו תוכנית המבקשת מהמשתמש נתונים עבור הטוסט שברצונו להזמין והציגו את המחיר שעליו לשלם. 3. בחנות "רהיטים שווים" מספקים את שירות ההובלה של הרהיט בתשלום נוסף: עבור כל ק"מ הובלה יש לשלם 5 ש"ח. עבור כל קומה יש לשלם 1 ש"ח נוסף בעבור כל ק"ג של הרהיט. יש להציג ללקוח מהי הוצאותו הסופית בעבור הרכישה, כאשר ההוצאה כוללת את מחיר הרהיט, מחיר ההובלה ו %1 טיפ ממחיר הרהיט למובילים. דוגמא: עבור ספה שעולה 5 ש"ח ומשקלה 8 ק"ג, עבור לקוח שגר בקומה 3 במרחק 1 ק"מ מהחנות, סכום הוצאתו הוא: 5*1 + 5 3*8*1 + 5*.1 + = 579 ש"ח החליטו מהם נתוני התוכנית וכן האם כל נתון הוא קבוע, קלט, חישוב או פלט. כתבו תוכנית המבקשת מהמשתמש נתונים עבור הרכישה והציגו את המחיר שעליו לשלם.

2. תרגילי תחביר את השאלות שתתבקשו להגיש מפרק זה עליכם לכתוב בתכנית אחת )בבלוק נפרד כל שאלה. אם לא ראיתם בלוקים בתרגול, יש דוגמה בסוף המצגת(/ הקפידו להשתמש בקבועים. א..1.2.3.4.5.6.7.8.9 תרגילי תחביר משפטי תנאי אדם מוגדר כקטין אם גילו מתחת ל 18 שנים, אחרת הוא מוגדר כבוגר. כתוב תוכנית המבקשת מהמשתמש את גילו ומציגה לו האם הוא קטין או בוגר. אדם מוגדר כקטין אם גילו מתחת ל 18 שנים, כבוגר אם גילו בין 1865, אחרת הוא מוגדר כפנסיונר. כתוב תוכנית המבקשת מהמשתמש את גילו ומציגה לו האם הוא קטין, בוגר או פנסיונר. כתוב תוכנית הקולטת מהמשתמש מספר דוספרתי )ניתן להניח שהקלט תקין( ומציגה הודעה האם שתי ספרות המספר זהות. למשל במספר 44 שתי הספרות זהות. כתוב תוכנית הקולטת מהמשתמש מספר תלתספרתי )ניתן להניח שהקלט תקין( ומציגה הודעה האם שלוש ספרות המספר זהות. למשל במספר 444 שלוש הספרות זהות. כתוב תוכנית הקולטת מהמשתמש מספר דוספרתי )ניתן להניח שהקלט תקין( ומציגה הודעה האם שתי ספרות המספר עוקבות. למשל במספר 45 שתי הספרות עוקבות. נשים לב שלספרה 9 אין מספר עוקב, ולכן אם יש ספרה מימינה התשובה תהיה שספרות המספר אינן עוקבות. כתוב תוכנית הקולטת מהמשתמש מספר תלתספרתי )ניתן להניח שהקלט תקין( ומציגה הודעה האם שלוש ספרות המספר עוקבות. למשל במספר 567 שלוש הספרות עוקבות. נשים לב שלספרה 9 אין מספר עוקב, ולכן אם יש ספרה מימינה התשובה תהיה שספרות המספר אינן עוקבות. לפני כל נסיעה במכונית עלינו לבדוק האם יש למלא דלק. עפ"י ההמלצה, יש כדאי למלא דלק כאשר כמות הדלק שנותרה בטנק היא %15 מהכמות המירבית של הטנק. כתוב תוכנית המציגה למשתמש הודעה האם עליו למלא דלק בהתאם לנתוני גודל הטנק שברכבו. במירוץ הלילה של ליליפוט הרצים מחולקים למקצים עלפי זמן היעד שקבעו לעצמם. רץ אשר משער שיסיים את המירוץ עד 5 דקות )כולל( משובץ למקצה A, רץ אשר משער שיסיים את המירוץ בין 5 ל 6 דקות )כולל( משובץ למקצה B, ורץ אשר משער שיסיים את המירוץ תוך יותר מ 6 דקות משובץ למקצה C. כתוב תוכנית המציגה למשתמש לאיזה מקצה הוא משובץ. נייצג תאריך ע"י מספר בן 8 ספרות: 2 הספרות השמאליות מייצגות את היום, שתי הספרות הבאות מייצגות את החודש ו 4 הספרות ימניות מייצגות את השנה. דוגמאות לקלט: התאריך 2.6.214 ייוצג ע"י המספר 26214 התאריך 8.6.214 ייוצג ע"י המספר 86214, שהוא בעצם המספר כתוב תוכנית הקולטת מהמשתמש תאריך ומציגה לו את ההודעה הבאה: 86214

The year is XXXX, the month is XX, and the day is XX..1 למשל עבור התאריך 15.9.21 )המיוצג ע"י המספר 15921( יוצג: The year is 21, the month is 9, and the day is 15. נגדיר כי החודשים מרץ, אפריל ומאי מוגדרים כאביב; החודשים יוני, יולי ואוגוסט מוגדרים כקיץ; החודשים ספטמבר, אוקטובר ונובמבר מוגדרים כסתיו; והחודשים דצמבר, ינואר ובפרואר מוגדרים כחורף. כתוב תוכנית הקולטת מהמשתמש תאריך 8 התאריך שייך. כמספר בעל ספרות ומציגה לו הודעה לאיזו עונת שנה התאריך 1121 שייך לסתיו, כי הוא מייצג את התאריך 1/1/21 התאריך 17215 שייך לקיץ, כי הוא מייצג את התאריך 1/7/215 ב..1.2.3.4.5.6 תרגילי תחביר לולאות כתוב תוכנית הקולטת מהמשתמש מספרים שלמים עד אשר הוקלדו בדיוק 5 מספרים זוגיים. כתוב תוכנית הקולטת מהמשתמש 1 מספרים שלמים והצג כמה מספרים שהוקלדו איזוגיים. כתוב תוכנית הקולטת מהמשתמש תווים עד אשר הוקלדו בדיוק 5 תווים שהם אותיות גדולות. כתוב תוכנית הקולטת מהמשתמש 1 תווים והצג כמה תווים הם אותיות קטנות. כתוב תוכנית הקולטת מהשמתמש מספרים דוספרתיים עד אשר מוקלד מספר דוספרתי שספרותיו זהות. ניתן להניח כי הקלט תקין. כתוב תוכנית הקולטת מהמשתמש מספר. כל עוד המספר אינו תלתספרתי התוכנית תבקש מהשמתמש להקליד את מספר חדש. כתוב תוכנית הקולטת מהמשתמש מספרים עד אשר מוקלד מספר תלתספרתי שהוא כפולה של 7. למשל המספר 378..7 כתוב תוכנית הקולטת מהמשתמש מספר ומדמה את המשחק "7 בום!": התוכנית תדפיס את כל המספרים מ 1 ועד המספר שהתקבל, אבל כל פעם כאשר יש מספר שהוא כפולה של 7 תוצג המילה boom! במקום המספר. כתוב תוכנית הקולטת מהמשתמש תווים עד אשר מוקלדים ברצף 3 תווים המייצגים אותיות עוקבות )ניתן להניח שבקלט רק אותיות קטנות(..8.9 דוגמאות למתי יפסק הקלט: a > b > a > c > d > e

a > b > c a > f > g > h ג..1 תרגילי תחביר מערכים הגדר מערך בגודל 1 של מספרים שלמים וקלוט לתוכו ערכים. הצג רק ערכים שהם זוגיים. הגדר מערך בגודל 1 גדולה. של תווים וקלוט לתוכו ערכים. הצג את האינדקסים שבתוכם ישנו תו שהוא אות.2 הגדר מערך של מספרים בגודל 1 ושים בתוכו לפי הסדר ערכים שהם כפולות של 3: כלומר הערכים, 6,3 וכו'..3 הגדר מערך של 1 זוגיים,( 4,2 וכו'(. מספרים שלמים וקלוט לתוכו ערכים. הגדל ב 1 את הערכים שנמצאים במיקומיים.4 הגדר מערך של מספרים שלמים בגודל 1 וקלוט לתוכו ערכים. הגדל ב 1 את הערכים שנמצאים במיקומיים זוגיים ), 4 2, וכו'( ואח"כ הקטן ב 1 את הערכים שנמצאים במיקומים שהם כפולה של ), 3 6,3 וכו'(..5 הגדר מערך של תווים בגודל 1 שהתקבל מופיע במערך. וקלוט לתוכו ערכים, וכן קלוט תו נוסף. הצג כמה פעמים התו הנוסף.6 הגדר שני מערכים של מספרים שלמים בגודל 5 כל אחד. קלוט ערכים לתוך המערך הראשון ואז קלוט ערכים לתוך המערך השני. הצג את המיקומים אשר הערכים בהם בשני המערכים זהים. הגדר 3 מערכים של מספרים שלמים בגודל 5 כל אחד. קלוט ערכים לתוך המערכים הראשון והשני. שים בכל איבר במערך השלישי את סכום האיברים במיקומים התואמים במערכים הראשון והשני. הגדר מערך של 5 תווים וקלוט לתוכו ערכים. בדוק האם כל התווים שהוקלדו למערך זהים והציגו הודעה מתאימה..7.8.9 1. הגדר מערך של 5 מספרים שלמים וקלוט לתוכו ערכים. בדוק האם ערך כל איבר גדול מערך האיבר שלפניו והצג בסוף הודעה מתאימה.

ש 3. ביטויים לוגיים ומשפטי תנאי יש להקפיד על בדיקת מקרים זרים על קריטריון זהה ולא לשלב בין קריטריונים שונים. אם יש צורך אז בתוך if פנימי. 1. פלוני רוצה לקנות טוסטוס. הוא עובד ומרוויח כסף, אך יחד עם זאת יש לו הוצאות שוטפות. כתוב תוכנית המבקשת מפלוני את הנתונים הדרושים ומציגה לו אם יוכל לקנות מתישהו את הטוסטוס, ואם כן, כמה חודשים יהיה עליו לעבוד עד אשר יוכל לקנות אותו. כתבו תוכנית הפותרת את המשוואה הבאה.Ax+B= עליכם לקלוט מהמשתמש את מקדמי המשוואה A ו B, ולהציג את פתרון המשוואה: ערכו של X, אין פתרון או אינסוף פתרונות. כתוב תוכנית המחשבת כמה כסף יש לתת בצ'ק לחתונה עפ"י הקריטריונים הבאים:.2.3 אם החתן או הכלה מוגדרים כחברים קרובים סכום הבסיס הינו 5 אם החתן או הכלה הינם בנימשפחה הבסיס הוא 1 בכל מקרה אחר סכום הבסיס הינו 25 אם ההיכרות עם אחד מבני הזוג היא מעל 3 שנים, יש לשים 5 נוספים, אלא אם אתה בן משפחה אם זמן הנסיעה לחתונה מעל שעה יש להוריד 5 מהסכום, אלא אם אתה בןמשפחה עליכם להחליט מהם הנתונים שיש לקלוט ולבסוף להציג את ההמלצה לגובה הצ'ק. 4. בספריה יש מנויים, כך שכל מנוי יכול להשאיל ספרים עפ"י ההגבלות הבאות: מנוי מבוגר יכול להשאיל עד 5 ספרים, ומנוי ילד יכול להשאיל עד 3 ספרים. כאשר מנוי משאיל ספר, במקרה ויש לו בבית ספר שמוחזק מעל חודש, לא ניתן להשאיל לו ספר נוסף )ללא תלות במספר הספרים שעדיין יכול להשאיל(. עליכם לכתוב תוכנית אשר קולטת נתוני מנוי, ומציגה האם יכול להשאיל כעת ספר נוסף. עליכם להחליט אילו נתונים יש לקלוט. על מנת להחליט האם סטודנט מתקבל ללימודים במכללת ליליפוט יש לבדוק האם הוא עונה לפחות על אחד מן הקריטריונים הבאים:.5 מממוצע בגרות לפחות 12. ציון פסיכוכמטרי לפחות 7, וגם שהציון על החלק הכמותי הינו לפחות 145 וגם שהציון על חלק האנגלית הינו לפחות 12. יקלול ממוצע הבגרות עם ציון הפסיכומטרי הוא לפחות 6, כאשר נוסחאת השקלול הינה: 1.2 /)ציון בגרות ) +.8 * )ציון פסיכומטרי )

גוליבר קיבל פסיכומטרי 65 ויש לו ציון בגרות 95. מאחר ואינו מתקבל על בסיס אחד משני הקריטריונים הראשונים, נבדוק מהו ציונו המשוקלל: = 599.1666 95/1.2.8*65. + מאחר וציונו המשוקלל של גוליבר קטן מ 6 הוא אינו מתקבל ללימודים. לעומת זאת, עבור פסיכומטרי 65 וציון בגרות 97 היה גוליבר מתקבל ללימודים מאחר וציונו המשוקלל היה מעל = 6.8333 :6 97/1.2.65*.8 + כתבו תוכנית הקולטת מהמשתמש את הנתונים הדרושים ומציגה הודעה האם הסטודנט יכול להתקבל ללימודים במכללת ליליפוט. 6. כתבו תוכנית המציגה הצעת אימון לאדם הרוצה להיכנס לכושר ריצה. ההצעה מתבססת על כושרו של האדם, המבוסס על דופק המנוחה, ועל מספר השבועות שכבר התאמן. להלן טבלה עם נתונים: דופק מנוחה עד 6 דופק מנוחה בין 6 ל 7 דופק מנוחה מעל 7 3 ק"מ 3 ק"מ 3 ק"מ שבוע 12 3 ק"מ 5 ק"מ 5 ק"מ שבוע 34 3 ק"מ 8 ק"מ שבוע 5 והילך 1 ק"מ יש להחליט מה הנתונים שיש לקלוט ולהציג לבסוף המלצה כמה ק"מ על האדם לרוץ באימון הקרוב. כתבו תכנית אשר מקבלת מהמשתמש 3 מספרים שלמים המיצגים: ציון בחינה )ציון מתוך מאה(, ממוצע תרגילי בית )ציון מתוך מאה(, ומספר תרגילים שהוגשו )עד 8 תרגילים(. התוכנית תחשב את הציון הסופי על פי הנוסחה הבאה:.7 אם הוגשו עד 4 תרגילי בית כולל, הציון הסופי הוא )נכשל(. אם הוגשו 5 או 6 תרגילי בית: ממוצע תרגילי הבית יהווה 2% תקף בציון הסופי )ראו בהמשך הסבר מהו "ציון תקף"( במידה והסטודנט עבר את הבחינה בציון 55 לפחות. במידה והסטודנט קיבל בבחינה ציון של 54 ומטה, הציון הסופי יהיה זהה לציון הבחינה. אם הוגשו 7 או 8 תרגילי בית: o אם ציון הבחינה הוא 54 ומטה: o אם ממוצע תרגילי הבית הוא 8 ומעלה, אז תרגילי הבית מהווים %25 מגן. אם ממוצע תרגילי הבית הוא פחות מ הציון בבחינה נע בין 55 ל 1: תרגילי הבית מהווים %3 מגן. 8, אז תרגילי הבית מהווים %2 מגן.

הערה: כאשר כתוב תקף, הכוונה היא שהציון של תרגילי הבית ישוקלל בכל מקרה, גם אם הוא מוריד את ציון הבחינה. כאשר כתוב מגן, הכוונה היא שהציון של תרגילי הבית ישוקלל אם ורק אם הוא מעלה את ציון הבחינה. התכנית שתכתבו צריכה לקרוא מהקלט 3 מספרים ולהדפיס את הציון הסופי בקורס לפי החישוב שתואר לעיל.

4. לולאות שימו לב: כדי לפתור תרגילים בפרק זה אין להשתמש במחלקה!String טיפ: לעבור על דוגמאות יצירת מספרים ע"י הוספת ספרות משמאל / ימין שהוצגו במצגת. קלוט מהמשתמש מספר שלם חיובי וספרה, והצג כמה פעמים הספרה מופיעה במספר. דוגמא: עבור המספק 123532 והספרה 3 יוצג הערך 2, מאחר והספרה 3 מופיעה פעמיים. יש לקלוט מהמשתמש מספר שלם חיובי ולייצר מספר חדש המכיל רק את הספרות שבמיקומים הזוגיים. מיקומה של הספרה הימנית ביותר הוא. דוגמא: עבור המספר 12345 יש לייצר את המספר 135. כתוב תוכנית הקולטת מהמשתמש 2 מספרים שלמים חיוביים בעלי מספר ספרות זהה. יש להציג את מספר הספרות במיקומים זהים שבעלות ערך זהה. דוגמא: עבור המספרים 12345 ו 12855 יוצג 3 כי הספרות 2 1, ו 5 נמצאות באותם מיקומים בשני המספרים. ספרת הביקורת היא הספרה התשיעית, הימנית ביותר, של מספר הזהות והיא מחושבת על ידי אלגוריתם,Luhn שאותו פיתח איש מעבדות IBM בשנות ה 5, המשמש לחישוב ספרות ביקורת לא רק למספרי הזהות הישראלים..1.2.3.4 הנוסחה לחישוב ספרת הביקורת מורכבת מסדרת משקל זהה שניתנת לכל אחת משמונה הספרות שמשמאל בכל מספר זהות. סדרת המשקל שניתנת לכל אחת משמונה הספרות משמאל: 1 )לספרה הראשונה(, 1, 2,.2,1,2,1,2 כל ספרה מוכפלת במשקל שניתן לה. בהמשך מחברים את כל הספרות שנוצרו מההכפלה. אם למשל בעקבות ההכפלה נוצר מספר דו ספרתי, שתי ספרותיו מחוברות זו לזו בפעולת חיבור הספרות. למשל, אם הספרה השישית של מספר הזהות היא 8, המשקל שלה הוא 2 לפי סדרת המשקל הזהה. תוצאת ההכפלה היא 16. בפעולת החיבור של כל הספרות, מחברים בין היתר את 1 ו 6, ולא מוסיפים את 16 לכל החיבור. את הסכום שמתקבל בחיבור כל הספרות שנוצרו בהכפלה משלימים לכפולה הקרובה של 1 כלפי מעלה. למשל, אם הסכום שהתקבל הוא 48, מעגלים ל 5. ההפרש שנדרש לצורך ההשלמה הוא ספרת הביקורת. במקרה זה 2. חישוב לדוגמה )מספר זהות פיקטיבי(: 789621349 7x1=7, 8x2=16, 9x1=9, 6x2=12, 2x1=2, 1x2=2, 3x1=3, 4x2=8 מחברים את כל הספרות שהתקבלו: 7+1+6+9+1+2+2+2+3+8 הסכום שהתקבל: 41. כדי להגיע לכפולה הקרובה של 1 מעגלים ל 5. ההפרש שנדרש להשלמה )ההפרש בין 5 ל 41, שהוא סכום החיבור( הוא 9. לכן 9 היא ספרת הביקורת. מקור התיאור: http://www.ynet.co.il/articles/,734,l448352,.html

קלוט מהמשתמש מספר תעודת זהות הכולל ספרת ביקורת )סה"כ 8 או 9 ספרות(, והצג למשתמש הודעה האם המספר תקין עפ"י בדיקת האלגוריתם הנ"ל. כתוב תוכנית הקולטת מהמשתמש מספר שלם חיובי ומייצרת מספר חדש כך שכל זוג ספרות יוחלף באופן הבא: ספרת האחדות תהפוך להיות ספרת העשרות וספרת העשרות תהפוך להיות ספרת האחדות ספרת המאות תהפוך להיות ספרת האלפים וספרת האלפים תהפוך להיות ספרת המאות וכו'.5 במידה ומספר הספרות איזוגי, הספרה השמאלית תשאר במקומה. עבור המספר 1234567 התוכנית תייצר ותציג את המספר 1325476 עבור המספר 9728 התוכנית תייצר ותציג את המספר 7982 יש לקלוט מהמשתמש מספר שלם חיובי ולייצר מספר חדש כך שספרותיו הן כמו המספר המקורי, ומימינן הספרות בסדר הפוך. דוגמא: עבור המספר 123 יש לייצר את המספר 123321. כתוב תוכנית הקולטת מהמשתמש ביטויים חשבונים הכוללים את הסימן + עד אשר יוקלד ביטוי עם הסימן. עבור כל ביטוי התוכנית תייצר מספר חדש ותציגו באופן הבא: הספרות השמאליות הינן תוצאת חיסור המספרים והספרות שמימין הן תוצאת חיבור המספרים..6.7 ניתן להניח שהמספר הראשון גדול מהמספר השני. https://fbcdnsphotosfa.akamaihd.net/hphotosakprn2/t1/188855_1152193586557878_156289186_n.jpg התמונה לקוחה מתוך:

כאשר אינשטיין הגאון היה ילד, המורה ביקשה ממנו לחשב את תוצאת צמצום השבר 17/85 ואינשטיין מיד ענה לה שהתוצאה היא 1/5. המורה שאלה אותה כיצד ביצע את החישוב כ"כ מהר והוא ענה שהוא העלים מהמונה את ספרת האחדות )ולכן נשאר עם 1( והעלים מהמכנה את ספרת העשרות )ולכן נשאר עם 5(. כמובן ששיטה מוזרה זו אינה עובדת עבור כל שבר...8 כתבו תוכנית המציגה עבור כל השברים שגם המונה וגם המכנה שלהם דוספרתיים והינם קטנים מאחד, את השברים אשר דרך צמצום זו עובדת עבורם. דוגמאות לשברים שאמורים לצאת לכם בפלט: לידיעתכם, סה"כ יש 48 שברים שכאלו. כתוב תוכנית הקולטת מהמשתמש שני מספרים שלמים חיוביים הקלט תקין(. התוכנית תבנה מספר חדש מטיפוס int באופן הבא: בעלי מספר ספרות זהה )ניתן להניח כי.9 ספרת האחדות במספר הראשון תעיד כמה פעמים תופיע ספרת האחדות מהמספר השני במספר החדש ספרת העשרות במספר הראשון תעיד כמה פעמים תופיע ספרת העשרות מהמספר השני במספר החדש וכו' סדר הספרות במספר החדש יהיה עפ"י סדרן במספר המקורי. המספר החדש מוגבל ל 9 ספרות בלבד. דוגמה: Enter 2 numbers with the same number if digits: 123 456 res = 455666 כלומר, הספרה 6 תופיע 3 פעמים במספר החדש, הספרה 5 תופיע פעמיים במספר החדש והספרה 4 תופיע פעם אחד בלבד. דוגמה: Enter 2 numbers with the same number if digits: 2323 6789 res = 677788999 כלומר, הספרה 9 תופיע 3 פעמים במספר החדש, הספרה 8 תופיע פעמיים במספר החדש, הספרה 7 תופיע 3 פעמים במספר החדש והספרה 6 תופיע פעם אחת בלבד מאחר ולא יתכן שיהיו יותר מ 9 ספרות במספר החדש. דוגמה:

Enter 2 numbers with the same number if digits: 333 678 res = 666777888 1. כתוב תוכנית הקולטת מהמשתמש מספר שלם חיובי וספרה. בתוכנית זו נחלק את המספר לחלקים )מימין לשמאל( כך שאורכו של כל חלק יהיה כערך הספרה שנקלטה. במידה ולחלק האחרון אין מספיק ספרות, הוא ישאר באורך הנותר. למשל: עבור המספר 123456 והספרה 2 נחלק את המספר לחלקים הבאים: 56 34 12 עבור המספר 1234567 והספרה 3 נחלק את המספר לחלקים הבאים: 567 234 1 התוכנית תייצר מספר חדש כך שסדר הספרות בכל חלק הפוך. דוגמה: Enter a number and a digit: 12345678 3 res = 21543876 חלקי המספר המקורי: 678 345 12 ולאחר שהופכים את סדר הספרות בכל חלק המספר החדש שמתקבל הוא 876 543 21 דוגמה: Enter a number and a digit: 123456 2 res = 214365.11 כתוב תוכנית הקולטת מהמשתמש מספר. התוכנית תציג למסך ריבוע באופן הבא: המשולש התחתון שמאלי של הריבוע יהיה עם * והמשולש העליון הימני יהיה עם #. עבור המספר 6 יוצג הריבוע הבא: עבור המספר 5 יוצג הריבוע הבא:

12. כתוב תוכנית הקולטת מהמשתמש מספר ומציירת משולש שווה שוקיים שבסיסו למעלה. דוגמא: עבור המספר 7 יצוייר המשולש הבא )הקווים הם רק כדי שיהיה לכם יותר נוח לנתח(: ******* ****** ***** **** *** ** *

13. קלוט מהמשתמש מספר איזוגי המייצג בסיס של משולש )ניתן להניח כי הקלט תקין(. צייר שעון חול כך שבסיסו העליון והתחתון הם ברוחב הבסיס שנקלט. עבור base=3 יצויר שעון החול הבא: עבור base=5 יצויר שעון החול הבא:.14 קלוט מהמשתמש מספר והדפס "שטיח" של ריבועים: אורכו ורוחבו של כל ריבוע יהיה כערך המספר שהוקלד, וכן בכל שורה ועמודה יהיו ריבועים כערך המספר שהוקלד.

15. כתוב תוכנית שתדפיס עץ ברוש. עץ ברוש מורכב מרצף של משולשים אחד מתחת לשני ולבסוף גזע. קלוט מהמתשמש מספר איזוגי שיהווה את בסיס המשולש. יש לצייר ברצף אחדמתחת לשני 3 משולשים, ובסוף לצייר את גזע העץ שהוא עמוד בגובה המספר האיזוגי שהוקלד מתחת למרכז המשולש האחרון. לדוגמא, עבור הערך 3: כדי להקל את העבודה תתחילו בוכנית הקוראת מהמשתמש מספר X. התוכנית תדפיס משולש שווה שוקיים שבסיסו X. למשל, עבור 5=X הפלט יראה כך )בדוגמא יש מקפים במקום רווחים, כדי שיהיה לכם יותר נוח לנתח את הפלט(:

מספרים ידידים הם זוג מספרים שכל אחד מהם שווה לסכום מחלקיו של המספר האחר, לא כולל המספר עצמו אבל כולל 1. הזוג הראשון והקטן ביותר של מספרים ידידים הם המספרים 22 ו 284 מאחר ו:.16 מחלקיו השלמים של המספר 22 הם: 55,44,22,2,11,1,5,4,2,1 ו 11 וסכומם הוא 284 מחלקיו השלמים של המספר 284 הם: 71, 4 2, 1, ו 142 וסכומם הוא 22 1 2 כתוב תוכנית המציגה את 1 המספרים הידידים הראשונים. פלט התוכנית צריך לבסוף להיות בדיוק הפלט הבא: 17. מספר מאושר הוא מספר אשר בודדת, מקבלים את המספר 1. אם מחברים את סכום ריבועי ספרותיו בתהליך חוזר, עד לקבלת ספרה מספרים מאושרים לדוגמא:. 1,82,32,13 דוגמאות לחישוב: 13 1 2 + 3 2 = 1 1 2 + 2 = 1 82 8 2 + 2 2 = 64+4 = 68 6 2 + 8 2 = 36+64 = 1 1 2 + 2 + 2 = 1 188 1 2 + 8 2 + 8 2 = 1+64+64 = 129 1 2 + 2 2 + 9 2 = 1+4+81 = 86 8 2 + 6 2 = 64+ 36 = 1 1 2 + 2 + 2 = 1 16/46

כתוב תוכנית המציגה את כל המספרים המאושרים מ 1 ועד שיש 3 מספרים רצופים שהם מאושרים. סוף פלט התוכנית צריך לבסוף להיות בדיוק הפלט הבא: 17/46

5. מערכים ומטריצות שימו לב: כדי לפתור תרגילים בפרק זה אין להשתמש במחלקה!String כתוב תוכנית הקולטת מספרים לתוך 2 מערכים בגודל 5 כל אחד. יש להציג העם ערכי המערך הראשון זהים לערכי המערך השני, אבל בסדר הפוך. עבור האוסף 5 4 3 2 1 והאוסף 1 2 3 4 5 תוצג ההודעה שהאוספים הפוכים עבור האוסף 5 4 3 2 1 והאוסף 2 3 5 4 ת 1 וצג ההודעה שהאוספים אינם הפוכים.1 כתוב תוכנית הקולטת מספרים לתוך מערך בגודל 5. התוכנית תציג האם הערך של כל איבר המערך גדול מהערך שמשמאלו..2 עבור האוסף 2 21 32 65 98 תוצג ההודעה שכל ערך גדול מהערך שמשמאלו. עבור האוסף 2 21 7 65 98 תוצג ההודעה שלא כל ערך גדול מהערך שמשמאלו. כתוב תוכנית המגדירה מערך בגודל 1 וקלוט ערכים ל 2 האיברים הראשונים. עליך למלא את שאר איברי המערך כך שערכו של כל איבר יהיה סכום שני האיברים שלפניו. לבסוף יש להציג את ערכי המערך..3 דוגמא: אם קלטנו כמספר הראשון את 2 וכמספר השני את 6, המערך לבסוף יראה כך: 2,6,8,14,22,36,58,94,152,246 כתוב תוכנית הקולטת מהמשתמש מערך בגודל 5 ומספר שלם. התוכנית תציג האם כל זוג ערכים שווה למספר שהתקבל..4 דוגמא: עבור המערך ]4, 4[ 3, 4, 3, והמספר 7 יוצג "אמת" מאחר וסכום האיבר הראשון והשני הוא 7, סכום האיבר השני עם השלישי הוא 7 וכו'. כתוב תוכנית הקולטת ערכים לשני מערכים בגודל זהה. התוכנית תציג האם ערכי איברי האוסף השני זהים בסדר שלהם לערכי האוסף הראשון, אבל עם סטייה של איבר אחד ימינה. כלומר:.5 18/46

האם ערכו של האיבר ה 2 במערך השני שווה לערכו של האיבר ה 1 במערך הראשון וגם האם ערכו של האיבר ה 3 במערך השני שווה לערכו של האיבר ה 2 במערך הראשון וכן הלאה. ערכו של האיבר הראשון במערך השני יבדק למול האיבר האחרון במערך הראשון עבור שני המערכים הבאים יוצג :true 1 2 3 4 5 9 3 4 6 8 1 2 3 4 5 8 9 3 4 6 עבור שני המערכים הבאים יוצג :false 1 2 3 4 5 9 3 4 6 8 1 2 3 4 5 9 3 4 5 8 הגדר מערך של 1 תווים וקלוט לתוכו נתונים. ידוע כי במערך זה יש 2 אותיות גדולות בדיוק, כל השאר קטנות )ניתן להניח שהמשתמש ידידותי(. עליך להחליף את כל האותיות בטווח זה לאותיות גדולות. למשל: עבור המערך: afgkertmh הוא ישתנה להיות afgkertmh.6 הגדר 3 מערכים בגודל 5 וקרא לתוך שניים מהם ערכים מהמשתמש, על הערכים להיות ממוינים מהקטן לגדול וכן כל הערכים שונים זה מזה )ניתן להניח כי המשתמש ידידותי(. העתק למערך השלישי כל ערך שמופיע גם במערך הראשון וגם במערך השני. לבסוף הדפס את המערך השלישי וכן את מספר האיברים שבו. דוגמא: עבור המערך 1,2,3,4,5 והמערך 2,4,7,8,9 במערך השלישי יהיו הערכים 2 ו 4, ויוצג בנוסף הערך 2..7 צמד מספרים יקרא "צמד מראה" אם סדר הספרות שלהם הפוך, וכן בתנאי ששני המספרים חיוביים..8 123 ו 321 הינם "צמד מראה" 121 ו 121 הינם "צמד מראה" מערך נקרא "מערך מראה" אם כל זוג ערכים מההתחלה והסוף הינם "צמד מראה". 19/46

האוסף הבא הינו "אוסף מראה" מאחר והערכים במיקומים 1 ו 6 הינם "צמד מראה" הערכים במיקומים 2 ו 5 הינם "צמד מראה" והערכים במיקומים 3 ו 4 הינם "צמד מראה". 123 121 45 54 121 321 האוסף הבא אינו "אוסף מראה" מאחר והערכים במיקומים 2 ו 5 אינם "צמד מראה". 123 123 45 54 121 321 האוסף הבא אינו "אוסף מראה" מאחר וקיים ערך שלילי. 123 123 45 54 123 321 כתוב תוכנית המגדירה מערך בגודל SIZE מתאימה האם המערך הינו "אוסף מראה". ניתן להניח כי גודל המערך שנקלט זוגי. זוגי )למשל 6( וקולטת לתוכו מספרים. התוכנית תציג הודעה הגדר 2 אוספים בגודל זהה וקלוט לתוכם מספרים שלמים וחיוביים. יש לבדוק ולהציג הודעה האם סכום הספרות זהה באיברים במיקומים תואמים..9 דוגמא: עבור שני האוספים הבאים התוכנית תדפיס שהאוספים תואמים. 14 61 227 23 43 92 הסבר: סכום הספרות באיבר הראשון באוסף הראשון הוא 5 וגם סכום הספרות באיבר הראשון אוסף השני הוא 5 סכום הספרות באיבר השני באוסף הראשון הוא 7 וגם סכום הספרות באיבר השני באוסף השני הוא 7 סכום הספרות באיבר השלישי באוסף הראשון הוא 11 וגם סכום הספרות באיבר השלישי באוסף השני הוא 11 2/46

הגדר מטריצה בגודל 5X5 של תווים ואתחל אותה. קלוט מהמשתמש תו והדפס את האינדקס של העמודה בה התו שהוקלד מופיע הכי הרבה פעמים. אם התו כלל לא מופיע במטריצה יש לתת הודעה מתאימה )שימו לב: אין לעבור על המטריצה בהתחלה כדי לבדוק זאת!(. הגדר מטריצה של מספרים בגודל 1X1. שאל את המשתמש בכמה שורות ובכמה עמודות מהמטריצה ברצונו להשתמש, יש לוודא כי הקלט אכן תקין )כלומר בין 1 ל 1(. קלוט ערכים למטריצה לפי המימד שהמשתמש ביקש. הצג למסך את המטריצה כפי שהוקלדה ע"י המשתמש )במימד שהמשתמש ביקש(. יש למצוא את הערך המקסימלי הנמצא על המסגרת החיצונית של המטריצה ולהציגו למסך. דוגמאת פלט:.1.11 הגדר מערך עם 4 מספרים וקלוט לתוכו ערכים בטווח 1. הדפס למסך את הפלט הבא, בהתאם להוראות הבאות: יש להדפיס למסך פלט כך שעבור כל ערך במערך תהייה עמודה שבתחתיתה הערך ומעליה כוכביות כערך. לדוגמא עבור המערך }5 4{ 2 6 יודפס הפלט הבא:.12 בשאלה זו עליכם להגדיר מטריצה בגודל NxM )שיוגרלו בטווח בין 48( ולמלא אותה בצורת נחש כפי שראינו במצגת, אבל הפעם הערך 1 יתחיל בעמודה הימנית למעלה, ירד ויעלה בעמודה ליד וכו' )ראו דוגמאות פלט(. שימו לב: הקוד צריך להיות כללי גם למספר עמודות זוגית וגם איזוגית. רמז בקרה: בפתרון הטוב ביותר יש רק if אחד והעקרון מאוד דומה לפתרון שראינו בהרצאה..13 21/46

14. הגדרה: מטריצה תקרא יהלומית אם יש בה ים במקומות היוצרים צורת יהלום, אין חשיבות לערכים שיש בשאר המקומות. כתוב תוכנית הקוראת מהמשתמש מספר N ומקצה מטריצה ריבועית N*N של מספרים בהתאם. בקש מהמשתמש להכניס לתוך כל איבר את הערך או 1. הדפס את המטריצה עם הנתונים. בדוק האם המטריצה שהוכנסה היא יהלומית והדפס את התשובה. נגדיר "מטריצה מקופלת ראשית" אם כאשר "מקפלים" את הפינה הימנית העליונה לעבר הפינה השמאלית התחתונה הערכים שיושבים אחד על השני זהים. נשים לב שאיברי האלכסון הראשי )מהפינה השמאלית העליונה לפינה הימנית התחתונה( אינם רלוונטים להגדרה..15 בשתי הדוגמאות הבאות כל זוג מספרים שיושב אחד על השני בקיפול מוקף בצורה זהה: כתוב תוכנית הקולטת מספרים למטריצה והדפס את המטריצה. ריבועית של מספרים )מספר השורות שווה למספר העמודות( 22/46

התוכנית תציג הודעה האם המטריצה שהתקבלה היא "מקופלת ראשית". נגדיר "מטריצה מקופלת משנית" אם כאשר "מקפלים" את הפינה השמאלית העליונה לעבר הפינה הימנית התחתונה הערכים שיושבים אחד על השני זהים. נשים לב שאיברי האלכסון המשני )מהפינה הימנית העליונה לפינה השמאלית התחתונה( אינם רלוונטים להגדרה..16 בשתי הדוגמאות הבאות כל זוג מספרים שיושב אחד על השני בקיפול מוקף בצורה זהה: כתוב תוכנית הקולטת מספרים למטריצה והדפס את המטריצה. ריבועית של מספרים )מספר השורות שווה למספר העמודות( התוכנית תציג הודעה האם המטריצה שהתקבלה היא "מקופלת משנית". בשאלה זו נדון במטריצה המורכבת מתווים, ובפרט התווים ' ' ו.'' מסלול במטריצה הוא רצף של איברים צמודים משמאל או מלמטה, המתחיל באיבר הימני העליון של המטריצה ומסתיים באיבר כלשהו בשורה התחתונה. כיוון התנועה ברצף זה הינו שמאלה או מטה בלבד. רצף התווים מכיל את התווים ' ' ו/או '' בלבד. התווים הללו מעידים על מיקום התו הבא ברצף. למשל אם בתא במסלול יש את התו ' ' משמע התו הבא במסלול צריך להיות מתחתיו, ואם התו במסלול הוא '' התו הבא במסלול צריך להיות משמאלו..17 התו בשורה התחתונה חייב להיות התו ' '. הגרל את מימדי מטריצה ריבועית בטווח 14 וקלוט לתוכה תווים מהמשתמש והצג את המטריצה. בדוק האם קיים מסלול של קווים מהפינה הימנית העליונה ועד לאיבר כלשהוא בשורה התחתונה והצג הודעה מתאימה. עבור המטריצות הבאות יוצג true מאחר ויש מסלול עפ"י ההגדרה הנ"ל. עבור המטריצה הבאה יוצג false מאחר שאין מסלול, כי התו בשורה התחתונה הוא '' ולא ' '. 23/46

עבור המטריצה הבאה יוצג false מאחר שאין מסלול, כי באיבר הימני ביותר בשורה השלישית יש ' ', ואז האיבר הבא במסלול היה צריך להיות מתחתיו ולא לידו. בכל הדוגמאות האלה, במקום התו a יכול להופיע כל תו אחר, כולל התווים ' ' ו '' כאשר אינם חלק מהמסלול. הטיפוסים long ו int מוגבלים בטווח המספרים אותם הם יכולים להכיל. לכן בתרגיל זה נבחר לייצג מספר בתוך מערך, כך שבכל איבר במערך תהייה ספרה אחת בלבד..18 דוגמא: המספר 1234 יכול להיות מיוצג במערך: 1 2 3 4 או למשל במערך )אין משמעות לאפסים מובילים במספר(: 1 2 3 4 כתבו את הפונקציה הבאה: public static int[] multiplynumbers(int[] num1, int[] num2) הפונקציה מקבלת שני מערכים שבכל איבר יש ספרה יחידה. המערכים מייצגים מספרים חיוביים שלמים כפי שתואר לעיל. הפונקציה תבצע תהליך של כפל ארוך עלמנת להחזיר את תוצאת מכפלת המספרים. התוצאה, אף היא, תחזור במערך של ספרות )ראה תזכורת לכפל ארוך בסוף השאלה(. דוגמא 1: עבור המערך 1 2 3 4 והמערך 9 7 24/46

המייצגים את המספרים 1234 ו 97 בהתאמה, יש לייצר ולהחזיר את המערך: 1 1 9 6 9 8 (1234*97=119,698) הגבלה: אין בשום שלב להמיר את איברי המספר ממערך לטיפוס אחר. שימו לב: הפתרון צריך להיות כללי כך שיתאים לכל אורך של מספרים. תזכורת לכפל ארוך ניתן למצוא בקישור: http://he.wikibooks.org/wiki/%d7%97%d7%a9%d7%91%d7%95%d7%9f/%d7%9b%d7%a4%d7%9c 25/46

6. פונקציות כתוב פונקציה המקבלת מספר חיובי שלם ומחזירה מספר חדש כך שכל ספרה תוחלף בספרה שערכה גדול ב 1 מהספרה המקורית במספר שהתקבל. הספרה 9 תוחלף בספרה. עבור המספר 12345 יוחזר המספר 23456 עבור המספר 111 יוחזר המספר 212121 עבור המספר 199 יוחזר המספר 2 עבור המספר 99 יוזחר המספר עבור המספר 939 יוחזר המספר 4.1 כתוב פונקציה המקבלת שני מספרים חיובים שלמים. במידה ושני המספרים שונים באורכה הםונקציה תחזיר את הערך 1, אחרת הפונקציה תחזיר מספר חדש כך שספרת האחדות תהיה הספרה הקטנה בין ספרות האחדות בשני המספרים, וכנ"ל לספרת העשרות המאות וכו'. עבור המספרים 123 ו 5678 יוחזר 1 מאחר והמספרים אינם באותו אורך עבור המספרים 194 ו 456 יוחזר המספר )4 154 היא ספרת האחדות הקטנה, 5 היא ספרת העשרות הקטנה ו 1 היא ספרת המאות הקטנה(..2 3. להלן הגדרה מוויקיפדיה: כתוב פונקציה המקבלת מספר ומחזירה האם הוא משוכלל או לא. בבדיקת הפונקציה יש לשלוח אליה את כל הערכים בין 1 ל 1 ולוודא שהערכים שעבורם מוחזר הערך true הם אכן רק המספרים המופיעים בהגדרה הנ"ל. א( כתוב פונקציה המקבלת מספר ומחזירה את סכום ספרותיו. ב( כתוב פונקציה המקבלת מערך של מספרים שלמים ומספר שלם עם אורך המערך. הפונקציה תחזיר את מספר האיברים במערך שסכום ספרותיו הוא 1. יש להשתמש בפונקציה שכתבתם בסעיף א'..4 כתוב פונקציה המקבלת מספר ותו, ומדפיסה למסך מסגרת של מעוין. למשל עבור 4 ו # יודפס )ציירתי פה _ במקום רווחים(: ######## )8 סולמיות )כלומר 4 סולמיות, רווחים ו 4 סולמיות(( ### ### 3( סולמיות, 2 רווחים, 3 סולמיות( ## ## 2( סולמיות, 4 רווחים, 2 סולמיות( # # 1( סולמיות, 6 רווחים, 1 סולמיות(.5 26/46

## ## 2( סולמיות, 4 רווחים, 2 סולמיות( ### ### 3( סולמיות, 2 רווחים, 3 סולמיות( ######## )8 סולמיות )כלומר 4 סולמיות, רווחים ו 4 סולמיות(( כתוב פונקציה המקבלת מטריצה ריבועית )משמע, מספר השורות שווה למספר העמודות(. הפונקציה תחזיר TRUE אם סכום האיברים בכל שורה שווה לסכום האיברים בעמודה המתאימה, ותחזיר FALSE אחרת..6 כלומר, יש לבדוק אם סכום איברי השורה הראשונה שווה לסכום העמודה הראשונה וכו'. דוגמא: עבור המטריצה הבאה הפונקציה תחזיר,TRUE מאחר וסכום איברי השורה הראשונה הוא 8 וכנ"ל סכום איברי העמודה הראשונה. סכום איברי השורה השניה הוא 16 וכנ"ל סכום איברי העמודה השניה וסכום איברי השורה השלישית הוא 8 וכנ"ל סכום איברי העמודה השלישית: 2 6 1 7 8 5 3 מטריצת מראה הינה מטריצה שבה איברי הטור הראשון זהים בערכם ובמיקומם לאיברי הטור האחרון, איברי הטור השני זהים בערכם ובמיקומם לאיברי הטור לפני האחרון וכו'..7 2 המטריצות הבאות הינן מטריצות "מראה": 2 6 1 7 8 5 3 1 7 8 2 6 2 6 1 7 8 5 3 5 3 1 7 8 2 6 המטריצה הבאה אינה מטריצת "מראה": 2 6 1 7 8 5 3 1 8 8 2 6 FALSE אחרת. כתוב פונקציה המקבלת מטריצה של מספרים ומימדיה. הפונקציה תחזיר TRUE אם המטריצה היא "מטריצת מראה", 27/46

הטיפוסים long ו int מוגבלים בטווח הערכים אותם הם יכולים להכיל. לכן בתרגיל זה נבחר לייצג מספר בתוך מערך, כך שבכל איבר במערך תהייה ספרה אחת..8 דוגמא: המספר 1234 יכול להיות מיוצג במערך באופן הבא: 1 2 3 4 או למשל במערך הבא )אין משמעות לאפסים מובילים במספר(: 1 2 3 4 כתבו את הפונקציה add אשר מקבלת 2 מערכים שכל אחד מהם מייצג מספר כפי שהוגדר לעיל. הפונקציה תייצר ותחזירמערך חדש שייצג את המספר שהוא סכום ערכי 2 המספרים שהתקבלו. דוגמא 1: עבור המערך 1 2 3 4 והמערך 9 7 המייצגים את המספרים 1234 ו 97 בהתאמה, יש לייצר ולהחזיר את המערך: 1 3 3 1 (1234+97=1331) דוגמא 2: עבור המערך 9 9 9 9 והמערך 9 7 28/46

המייצגים את המספרים 9999 ו 97 בהתאמה, יש לייצר ולהחזיר את המערך: 1 9 6 או למשל את המערך: 1 9 6 (9999+97=196) לתשומת ליבכם, בדוגמא 2 בתוצאה יש ספרה אחת יותר מאשר במספר הארוך יותר. הגבלה: אין בשום שלב להמיר את איברי המספר ממערך לטיפוס אחר. הגדרה: מטריצת אפסים שמאליתעליונה בגודל X היא תתמטריצה בתוך מטריצה אשר כל ערכיה בטווח ][][ ועד האיבר ]X1[]X1[ הם..9 כתבו את הפונקציה maxrectangle המקבלת מטריצה ריבועית, ומחזירה את גודלה X כפי שמתואר לעיל. הגבלה: בכל איטרציה אין לבדוק תאים שנבדקו באיטרציה הקודמת )כלומר, היעילות תהייה.)O(SIZExSIZE) 29/46

הבהרה 1: הערך שאינו יכול להופיע בכל מיקום במטריצה, ולא בהכרח רק על האלכסון. הבהרה 2: באיברי המטריצה שאינם חלק ממטריצת האפסים השמאלית עליונה יכול להיות כל ערך. כלומר, לא ספציפית רק הערך 1 ולא ספציפית רק באיבר יחיד במטריצה. 3/46

1. משחק איקסעיגול )איקסמיקסדריקס( בקובץ XO_starter.java המצורף נתונה תוכנית המדמה את המשחק איקסעיגול. עליכם להשלים את את הקוד כך שהתוכנית תעבוד בצורה מושלמת. שימו לב להגדרת הקבועים ולשימוש בהם. מומלץ מאוד לקרוא את הקוד המצורף ולהבין את הלוגיקה הכללית, ורק אז "לצלול" לתוך המימושים. החלקים שעליכם להשלים מסומנים ב // TODO להלן קישור לקובץ << XO_starter.java להלן קישור לקובץ jar שתוכלו להריץ ולראות כיצד התוכנית לבסוף צריכה לעבוד << הגדרת המשחק: עם התחלת התוכנית יתחיל משחק, ויש לבצע בו את השלבים הבאים עד לקבלת תוצאה סופית של המשחק: א.ציור לוח המשחק במצבו הנוכחי למסך ב. בקשת מהלך עבור משתמש: כלומר לבקש שורה ועמודה בגבולות הלוח. יש לוודא כי הקלט תקין מבחינת הערכים האפשריים )שורה ועמודה בין 13(, וכן כי המשבצת המבוקשת עדיין אינה מסומנת. אין להמשיך לשלב הבא לפני קבלת נתונים בשלב זה. הקלט יהיה בפורמט "מספר רווח מספר". ניתן להניח שהמשתמש מכניס מידע בפורמט זה. ג. בדיקה האם יש תוצאה סופית למשחק: ניצחון של אחד השחקנים או תיקו ד. בכל מקרה אחר יש לדאוג שבסיבוב הבא יתקבלו נתונים עבור המשתמש השני עם סיום המשחק יש להציג את אחת מתוצאות המשחק: השחקן הראשון )X( ניצח השחקן השני )O( ניצח תיקו )הלוח מלא, ואף שחקן לא מנצח(. לאחר הצגת תוצאת המשחק יש לשאול את המשתמש האם ברצונו לשחק שוב, כך עד אשר המשתמש יבחר לסיים. דוגמאת פלט באיטרציה מסוימת: 31/46

Murble Puzzle.11 בשאלה זו נממש אלגוריתם לפתרון.Murble Puzzle בבעיה זו ישנו מערך תווים שאורכו 2*size+1 כאשר יש במערך size תווים עם התו 'X' ו size תווים עם התו '' כאשר הם מסודרים לסירוגין, והאיבר האחרון הוא ריק. דוגמה עבור :size=3 דוגמה עבור :size=4 עליכם לכתוב תוכנית המבקשת מהמשתמש את size ומסדרת את איברי המערך כך שכל העיגולים יהיו בצד שמאל וכל האיקסים יהיו בצד ימין. דוגמה: עבור size=3 המערך יסודר להיות דוגמה: עבור size=4 המערך יסודר להיות על מנת לבצע סידור זה, יש לציית לחוקים הבאים: בכל סיבוב יוחלף המיקום הריק או עם אחד האיברים הסמוכים לו )פעולה זו תקרא ממנו מקום אחד, בתנאי שבאמצע בינהם יש תו אחר )פעולה זו תקרא.)jump,)shift או עם איבר המרוחק פלט התוכנית יציג את מצב המערך לאחר כל סיבוב, תוך ציון מהי הפעולה שבוצעה )S יסמן J,shift עבור L,jump עבור left ו R עבור.)right דוגמת פלט עבור :size=3 הדרכה: ראשית מיצאו את חוקיות ההזזות באמצעות השלמת הטבלאה הבאה עבור לוח עם.size=3 לצורך הדוגמה מולאו רק שתי השורות הראשונות: תוכן המערך סוג התזוזה 1 2 3 4 5 6 Move / Jump מתא לתא כיוון x x x x x x Move 5 6 R x x x Jump 3 5 R מלאו באופן דומה טבלה עבור לוח עם.size=6 32/46

חישבו: מהי חוקיות ההזזה? לאיזה כיוון תמיד זז X ולאיזה כיוון תמיד זז?מה קורה כאשר יש רצף של תאים זהים? לאחר שתענו על שאלות אלו ניתן לפנות ולפתור את הקוד: כתבו תוכנית הממשת משחק זה. הקפידו על חלוקה נכונה לפונקציות ועל מודולריות. 33/46

7. מחרוזות כתוב פונקציה המקבלת 3 מערכים של מחרוזות )מטריצות של תווים( text3) (text1, text2, וכן את מספר השורות במטריצות )בכל המטריצות מספר זהה של שורות ועמודות(. ב 2 המטריצות הראשונות יש טקסט ובמטריצה השלישית זבל..1 הפונקציה תשים מחרוזות ב text3 באופן הבא: במידה והאורך הכולל של השורה המתאימה ב text1 וב text2 קטן מאורך שורה אפשרית, נעתיק את השורה המתאימה מ text1 ל text3 ואח"כ נשרשר את השורה המתאימה מ.text2 אחרת נשים ב text3 שורה ריקה. כתוב main המגדיר 3 מטריצות שכאלו וקרא נותנים לתוך 2 המטריצות הראשונות. הפעל את הפונקציה, ולבסוף הדפס את המטריצה השלישית. דוגמא לפלט לתוכנית: כתוב פונקציה המקבלת מערך של מחרוזות )מטריצה של תווים(, מספר השורות המטריצה, מספר שלם ומערך בוליאני שאורכו כמספר השורות במטריצה. הפונקציה תחזיר מספר שלם..2 הפונקציה תחזיר כמה שורות במטריצה יותר קצרות מהמספר שהתקבל וכן עבור כל שורה תעדכן במיקום המתאים במערך הבוליאני האם השורה קצרה מהמספר שהתקבל או לא )כלומר, אם השורה הראשונה קצרה מהמספר שהתקבל, ערכו של המערך הבוליאני במקום ה יהיה,true אחרת )false. לבסוף הפונקציה תחזיר את כמות השורות שאורכן קצר מהמספר שהתקבל. ב main קלוט נתונים לתוך המטריצה, והגרל מספר בין 52 שישלח כמספר המבוקש לפונקציה. הפעל את הפונקציה, הדפס את כמות השורות שארכן קצר מהמספר שהוגרל וכן את האינדקסים של שורות אלו. כתוב פונקציה המקבלת מחרוזת ומחזירה מחרוזת חדשה המכילה את האות הראשונה מכל מילה במחרוזת שהתקבלה, וכל אות יכולה להופיע במחרוזת החדשה מקסימום פעם אחת בלבד..3 עבור המחרוזת Hello World תוחזר המחרוזת HW עבור המחרוזת Good morning Sunshine Moshe תוחזר המחרוזת GmS עבור המחרוזת num of student תוחזר המחרוזת nos 34/46

חתימת הפונקציה תהייה: public static String getfirstletters(string str) יש להשתמש בפונקציות של מחרוזות ולא "להמציא את הגלגל מחדש". כתוב פונקציה המקבלת מחרוזת ומחזירה מערך של מספרים שמספר איבריו הוא כמספר המשפטים במחרוזת וערכי איבריו הם מספר התווים בכל משפט במחרוזת..4 אם במחרוזת אין משפטים יוחזר.NULL שימו לב: משפט נגמר בתו נקודה ).( או בתו סימן קריאה )!( ניתן להניח שיש לפחות רווח אחד בין משפט למשפט )אך יתכן גם יותר מרווח אחד( רווחים בתחילת המשפט אינם נספרים באורך המשפט )כלומר, אורך המשפט הוא מהתו הראשון שאינו רווח ועד הנקודה או סימן הקריאה )לא כולל(( עבור המחרוזת: "Hi! This is a lovely day. Please join me for breakfast." יוחזר מערך באורך 3 עם הערכים הבאים: ]28, 2[. 2, עבור המחרוזת: "Hi! This is a lovely day. Please join me for breakfast" יוחזר מערך באורך 2 עם הערכים הבאים: ]2, 2[ )מאחר אין נקודה בסוף המחרוזת, המשפט האחרון אינו נספר(. עבור המחרוזת: " Hi! This is a lovely day. Please join me for breakfast.",2 יוחזר מערך באורך 3 עם הערכים הבאים: ]28, נספר באורך המשפט(. 3[ )המשפט הראשון באורך 3, מאחר והרווח לפני '!' "" יוחזר NULL ופרמטר הפלט יעודכן ל. "ab" יוחזר NULL ופרמטר הפלט יעודכן ל. עבור המחרוזת עבור המחרוזת מספר ק פ ר ק ר הוא מספר טבעי השווה לסכום הרישא והסיפא של הייצוג העשרוני של ריבועו. המספרים קרויים כך עלשם המתמטיקאי ההודי דאטארייה רמאצ'אנדרה קפרקר ]מתוך ויקיפדיה[..5 9 הוא מספר קפרקר, מכיוון שריבוע ספרותיו הוא )81 81 = 9²( ו = 9 1 8 + )הרישא היא 8 והסיפא היא 1(. גם 95121 מקיים את אותה תכונה: = 9484641 95121², ופיצול המספר לשני חלקים )רישא וסיפא( מניב: = 95121 4641 948 + 35/46

להלן דוגמה לכל מספרי הקפרקר עד 1,, חזקתם וחלוקתם לרישא ולסיפא: שימו לב: חלוקת המספר לרישא ולסיפא אינה בהכרח באמצע! בשאלה זו נממש בשתי גרסאות את פונקציה הבאה: public static boolean iskaprekarxxx(int num, int[] parts) הפונקציה מקבלת מספר num ומערך של מספרים parts באורך 2. הפונקציה תחזיר true אם המספר num הוא מספר קפרקר, ו false אחרת. במידה והמספר num שהתקבל הוא מספר קפרקר, הפונקציה תעדכן בשני איברי המערך את חלוקתו לרישא ולסיפא כפי שהוצג בדוגמאות הפלט לעיל. דוגמה: עבור המספר 2728 הפונקציה תחזיר true ותעדכן את המערך במקום ה להיות המספר 744 ואת המספר במיקום ה 1 להיות 1984. כתבו את הפונקציה בשתי גרסאות: 1. תשתמש בפעולות חשבוניות 2. תשתמש אך ורק בפונקציות מהמחלקה,String כאשר מותר להשתמש רק בפעולת כפל יחידה על מנת להעלות את המספר בריבוע עבור שתי הגרסאות מותר לכתוב פונקציות עזר ויש לדאוג שהקוד יהיה מודולרי. ב main השוו את זמני הריצה של כל אחת מהגרסאות באופן הבא: מדדו את הזמן רוצו בלולאה מ 1 עד 1, ועבור כל מספר בדקו בגרסה המומשת באמצעות פעולות מתמטיות האם הינו מספר קפרקר, ואם כן, הדפיסו אותו כפי שהוצג בפלט לעיל. מדדו את הזמנים שוב 36/46

רוצו בלולאה מ 1 עד 1, ועבור כל מספר בדקו בגרסה המומשת באמצעות מחרוזות האם הינו מספר קפרקר, ואם כן, הדפיסו אותו כפי שהוצג בפלט לעיל. מדדו את הזמנים שוב הציגו למסך את סה"כ הזמן שלקח ללולאה לרוץ בגרסה הראשונה ואת סה"כ הזמן שלקח ללולאה לרוץ בגרסה השניה הסיקו את המסקנות )אין צורך להגישן, אלא רק להתרשם מההבדל( 37/46

8. מיונים וחיפושים צפו בסרטו הבא המציג גרסה ל bubble sort כך שהערך הגבוה ביותר יהיה ראשון: https://www.youtube.com/watch?v=vv18nfe4eru ממשו קוד המדמה בדיוק את סדר ההחלפות כפי שמוצג בסרטון. כתבו פונקציה המקבלת מטריצה ריבועית של מספרים. הפונקציה תמיין את ערכי האלכסון הראשי מהקטן לגדול..1.2 דוגמה: עבור המטריצה: יש לעדכנה להיות: כתבו פונקציה המקבלת מחרוזת הכוללת אותיות קטנות וגדולות. הפונקציה תמיין את אותיות המחרוזת מהאות הקטנה לגדולה, אך לא תבדיל בין אותיות גדולות לקטנות.3 עבור המחרוזת zba הפונקציה תמיין אותה להיות abz עבור המחרוזת zzaac הפונקציה תמיין אותה להיות aaczz הנחה: כאשר יש אות גדולה וקטנה זהה, לא משנה מי תופיע קודם כתוב פונקציה המקבלת מטריצה של מספרים, שעמודותיה ממוינות מהערך הקטן לגדול וערך לחיפוש. הפונקציה תדפיס את אינדקס השורה והעמודה בה נמצא הערך. במידה ואינו קיים הפונקציה תדפיס הודעה מתאימה..4 למשל, עבור המטריצה הבאה והערך 7: 38/46

הפונקציה תדפיס שורה 2 ועמודה 1 כי במיקום זה קיים הערך 7. הפונקציה יכלה להדפיס גם את שורה 2 ועמודה.2 כתוב פונקציה המקבלת מטריצה של מספרים. יש למיין את ערכי המטריצה תוך שימוש באלגוריתם Bubble Sort שנלמד בכיתה כך שהערך הנמוך ביותר יהיה בפינה השמאלית העליונה והערכים יסודרו בערך עולה לפי שורותיהם..5 שימו לב: יש להשתמש במיון ולא רק לשים ערכים חדשים במטריצה )כלומר אין להשתמש במערך עזר(. דוגמה לאיך המטריצה צריכה להיראות לאחר המיון: כתוב פונקציה המקבלת מטריצה של מספרים. יש למיין את ערכי המטריצה תוך שימוש באלגוריתם Selection Sort שנלמד בכיתה כך שהערך הנמוך ביותר יהיה בפינה השמאלית העליונה והערכים יסודרו בערך עולה לפי שורותיהם..6 שימו לב: יש להשתמש במיון ולא רק לשים ערכים חדשים במטריצה )כלומר אין להשתמש במערך עזר(. דוגמה לאיך המטריצה צריכה להיראות לאחר המיון: 39/46

9. אובייקטים והכלת אובייקטים )וגם קצת קבצים ומיונים( 1. הגדר את המחלקה Lecturer אשר כוללת את הנתונים הבאים: name שם המרצה numoftimespenfalls מספר הפעמים שהמרצה מפיל את הטוש מהיד בממוצע בשיעור. ערך זה יכול להיות רק שלם חיובי. favoriteicecream ש ם הגלידה החביבה עליו מספר זיהוי אוטומטי במערכת, החל מהמספר 1 )ניתן להוסיף סעיף זה רק לאחר למידת הפרק "תכונות ושיטות סטטיות"( הגדר את המחלקה College אשר כוללת את הנתונים הבאים: name שם המכללה numoflecturers מספר מרצים שמלמדים בפועל )Lecturer מערך הכולל את נתוני המרצים )מטיפוס מחלקת alllecturers הנחיות כלליות למחלקות: a. הגדר בנאים. הבנאי יקבל גם את מספר המרצים המקסימלי שיכולים ללמד במכללה. יש לכתוב בנאי העתקה במידה ואובייקט ברשכפול. b. ממש שיטות set ו get לפי הצורך tostring ממש את השיטה c. א. ב. במחלקה College הוסף פעולה המוסיפה מרצה נוסף. הפעולה תחזיר false מרצה נוסף, ו true אם המרצה הוסף בהצלחה. במידה ואין מקום להוסיף במחלקה ג. College הוסף פעולה שתמיין את מערך המרצים לפי מספר הפעמים שהמרצה מפיל את הטוש בשיעור )מהקטן לגדול(. כתוב פונקציית :main הגדר College וקלוט לתוכו נתונים. הוסף למכללה 2 מרצים חדשים. הדפס את נתוני המכללה )וכמובן גם את נתוני המרצים(. ד. 4/46

מיין את המרצים במכללה לפי מספר הפעמים שהם מפילים את הטוש בשיעור. הדפס שוב את נתוני המכללה )וכמובן גם את נתוני המרצים(, לאחר השינוי. ה. עם היציאה מה main יש לשמור את נתוני המכללה לקובץ. בתחילת ה main יש לשאול את המשתמש האם הוא מעוניין לטעון את נתוני המכללה מקובץ קיים ואם כן לקרוא את הנתונים מהקובץ )ניתן לעשות סעיף זה לאחר למידת הפרק "עבודה עם קבצים"(. 2. בשאלה זו נטפל באורחים המתאכסנים בבית מלון. לצורך כך הגדירו את המחלקות הבאות: public class Guest { private String name; ערך זה יכול להיות רק שלם חיובי // passportnumber; private int } public class Room { ערך זה יכול להיות רק שלם בין // 4 1 numofbeds; private int private Guest[] allguests; } public class Hotel { private int numofusedrooms; private Room[][] allrooms; } במחלקה Room ישנו שדה המעיד על מספר המיטות בחדר. לא ניתן לאחסן בחדר יותר אורחים ממספר המיטות. במחלקה Hotel התכונה allrooms הינה מטריצה של חדרים, כך שכל שורה במטריצה מייצגת חדרים בקומה במלון. ניתן להניח שבכל הקומות מספר החדרים זהה, ניתן להניח כי מספר הקומות קטן מ 1 ומספר החדרים בכל קומה קטן מ 1. א. ב. כתוב למחלקה Hotel בנאי המקבל את מספר הקומות ומספר החדרים בכל קומה. הבנאי יגריל את מספר המיטות בכל חדר במלון )ערך בין 14( ויאתחל בהתאם את נתוני המלון. יש לכתוב לשאר המחלקות בנאים בהתאם. כתוב במחלקה Hotel מתודה המקבלת מערך של אורחים ומשבצת אותם בחדר פנוי במלון )כל האורחים צריכים להיות באותו חדר שמספר המיטות בו הוא לפחות כמספר האורחים(. המתודה תחזיר מספר המייצג את החדר בו שובצו האורחים: המספר יהיה תלת ספרתי כאשר ספרתו הראשונה היא מספר הקומה ושתי הספרות הבאות הן מספר החדר. עבור אורחים ששובצו בקומה השלישית בחדר 25 יוחזר 325 41/46

עבור אורחים ששובצו בקומה השניה בחדר 9 יוחזר 29 כתוב במחלקה Hotel מתודה המקבלת מספר פספורט של אורך ותחזיר את מספר החדר בו הוא מתארח. במידה והאורח אינו מתארח במלון יוחזר 1. כתוב במחלקה Hotel מתודה המחזירה את הקומה בה מספר החדרים הפנויים הגדול ביותר. כתוב main והגדר בו מלון, ולאחר מכן הצג תפריט החוזר על עצמו ובו האפשרויות הבאות: ג. ד. ה. קליטת נתוני אורחים ושיבוצם בחדר במלון. יש להציג באיזה חדר שובצו האורחים או האם אין חדר מתאים. ההודעה תוצג ב main ולא דרך המתודה. קליטת מספר פספורט של אורח והצגה באיזה חדר הוא מתאחסן. אם האורח אינו מתאחסן במלון יש להציג הודעה מתאימה. ההודעה תוצג ב main ולא דרך המתודה. הצג את נתוני המלון: עבור כל קומה יש להציג נתוני האורחים המתאחסנים בכל חדר. הצג באיזו קומה יש את מספר החדרים הפנויים הגדול ביותר. 1 2 3 4 ו. עם היציאה מה main יש לשמור את נתוני המלון לקובץ. בתחילת ה main יש לשאול את המשתמש האם הוא מעוניין לטעון את נתוני המלון מקובץ קיים ואם כן לקרוא את הנתונים מהקובץ )ניתן לעשות סעיף זה לאחר למידת הפרק "עבודה עם קבצים"(. 42/46

1. רקורסיות 1. להלן 5 פונקציות. עבור כל פונקציה יש לצרף עץ המתאר הרצה יבשה של הקוד עבור הערכים שמצויינים בהערה בשורת חתימת הפונקציה, וכן לתאר במשפט בודד מה הפונקציה עושה )לציין מה הפונקציה מבצעת ולא איך(. public static int foo(int x) } // run with x=529 if (x < 1) return x; שימו לב: אין להריץ שאלה זו, אלא לפתור ולהגישה על נייר. } return foo(x/1) + x%1; public static int goo(int x[], int s) { // run with x={12, 91, 28}, s=3 if (s == 1) return x[s1]; } return goo(x, s1) + x[]; public static void moo(int n) { // run with n=4 if (n == ) return; } moo(n1); for (int i= ; i < n ; i++) System.out.print("*"); System.out.println(); public static int koo(int x) { // run with x=529 if (x < 1) return x; } int k = koo((x/1)*1+x%1); return (k*1+(x%1)/1); public static int doo(int x) { // run with x=143 if (x < 1) return 1; } return 1 + doo(x/1); כתוב פונקציה רקורסיבית המקבלת מספר ומחזירה את מספר הספרות הזוגיות. כתוב פונקציה רקורסיבית המקבלת מספר ומחזירה true אם כל ספרותיו זוגיות, false אחרת..2.3 43/46

כתוב פונקציה רקורסיבית המקבלת מערך של מספרים וגודלו ומחזירה את מספר הערכים הזוגיים. כתוב פונקציה רקורסיבית המקבלת מערך של מספרים וגודלו ומחזירה true אם כל הערכים בו זוגיים, false אחרת. כתוב פונקציה רקורסיבית המקבלת מחרוזת ומחזירה true אם כל התווים בו הם אותיות גדולות, false אחרת. כתוב פונקציה רקורסיבית המקבלת מספר וספרה. הפונקציה תחזיר true אם הספרה מופיעה במספר, אחרת תחזיר.false נגדיר "מספר מתחלף" כמספר בו כל זוג ספרות שכנות )או צמודות( הינו בעל זוגיות שונה..4.5.6.7.8 כתוב פונקציה רקורסיבית המקבלת מספר שלם חיובי n ותחזיר true אם הוא "מספר מתחלף", אחרת תחזיר.false 163458 יוחזר true כי ליד כל ספרה זוגית יש ספרה אי זוגית. 1634589 יוחזר true כי ליד כל ספרה זוגית יש ספרה אי זוגית. 163789 יוחזר false כי הספרות 3 ו 7 צמודות ושתיהן איזוגיות. עבור המספר עבור המספר עבור המספר כתוב פונקציה רקורסיבית המקבלת מספר חיובי שלם ותחזיר true אם קיים זו לפחות זוג אחד של ספרות מתחלפות כפי שהוגדר בשאלה הקודמת, אחרת הפונקציה תחזיר.false.9 1. כתוב פונקציה רקורסיבית המקבלת שני מספרים חיוביים שלמים a ו b. הפונקציה תחזיר את שארית החלוקה של a ב b )כלומר את תוצאת )a%b באמצעות שימוש בפעולות חיבור וחיסור בלבד. 11. כתבו את הפונקציה הרקורסיבית :switchletters public c static void switchletters(stringbuilder str, int indexbegin, int indexend) הפונקציה מקבלת מחרוזת, אינדקס של האיבר הראשון ואינדקס של האיבר האחרון. הפונקציה תהפוך המחרוזת מהסוף להתחלה. דוגמא: עבור המחרוזת: "abcde" והמספרים ו 4, בסיום הפונקציה המחרוזת תהפוך להיות."edcba" כתוב פונקציה רקורסיבית המקבלת מערך של תווים ואורכו ומחזירה true אם כל התווים בו רק אותיות גדולות או רק אותות קטנות, false אחרת..12 למשל: עבור ABCD ו bacd יוחזר,true ועבור AkJL יוחזר.false 13. כתוב פונקציה רקורסיבית המקבלת מספר בבסיס 1 ומחזירה מספר חדש המייצג את המספר שהתקבל בבסיס 2. 14. כתוב פונקציה רקורסיבית המקבלת מספר בבסיס 1 ומספר נוסף המייצג בסיס )שיכול להיות 2 או 8 בלבד(. הפונקציה מחזירה מספר חדש המייצג את המספר שהתקבל בבסיס שהתקבל. 44/46

15. כתוב פונקציה רקורסיבית המקבלת מספר בבסיס 1 ומחזירה מחרוזת המייצגת את המספר בבסיס 16. 16. כתוב פונקציה רקורסיבית המקבלת מחרוזת המייצגת מספר בבסיס 16 ומחזירה מספר המייצג את המספר בבסיס 1. 17. כתוב פונקציה רקורסיבית המקבלת מערך של מספרים וספרה בין 91. הפונקציה תחזיר true אם יש רצף של מספרים במערך מ 1 ועד הספרה, אחרת תחזיר.false עבור המערך 3,1,2,3,4,6,3 והספרה 4 יוחזר true עבור המערך 3,1,2,1,2,3,4 והספרה 4 יוחזר true עבור המערך 1,2,3,4,1,5,1 והספרה 4 יוחזר true עבור המערך 3,1,2,1,2,3,5 והספרה 4 יוחזר false עבור המערך 3,1,2,3,5,6,3 והספרה 4 יוחזר false.18 כתוב פונקציה רקורסיבית המקבלת מערך של מחרוזות, מספר האיברים במערך ותו. הפונקציה תחזיר את מספר המופעים של התו במערך המחרוזות. דוגמא: עבור מערך המחרוזות } "yoyo" {"gogo", "momo", שתו זה מופיע 6 פעמים בכל המחרוזות. שאורכו 3 והתו o הפונקציה תחזיר 6 משום 19. כתוב פונקציה רקורסיבית המקבלת 2 מספרים שלמים. הפונקציה תחזיר true אם סכום ספרות המספר הראשון שווה לערך המספר השני, אחרת הפונקציה תחזיר.false דוגמא: עבור המספרים 123 ו 6 יוחזר true עבור המספרים 124 ו 6 יוחזר false עבור המספרים 4362 ו 15 יוחזר true.2 נתונה הסדרה )משמאל לימין(: 1, 2, 3, 6, 4, 13, 7, 24, 11, 42 נתון כי תמיד שלושת האיברים הראשונים בסדרה הם: 3 2, 1, כל איבר שנמצא במקום זוגי בסדרה, החל מהמקום ה 4, הוא סכום שלושת האיברים הקודמים לו כל איבר הנמצא במקום איזוגי בסדרה, החל מהמקום ה 5, הוא ההפרש המוחלט שבין שני האיברים במקומות הזוגיים שלפניו. 45/46

י י כתוב פונקציה רקורסיבית לחישוב האיבר ה n יהיה ערכו של האיבר במקום זה(. רמז: היזכרו בפתרון של סדרת פיבונאצ'י בסדרה זו )הקלט לפעולה יהיה המקום ה n והערך שיוחזר.21 בהינתן סולם, ניתן לטפס על שלביו ע"י טיפוס של שלב בודד או ע"י טיפוס שני שלבים בוזמנית )לא ניתן לדלג על 3 שלבים או יותר(. כתוב פונקציה רקורסיבית המקבלת כפרמטר מספר שלבים בסולם וחזירה את מספר האפשרויות השונות לטיפוס עליו. דוגמה: עבור סולם עם 4 שלבים, ניתן לטפס עליו בכל אחת מהאפשרויות הבאות: 1 1 1 1 2 1 1 1 2 1 1 1 2 2 2 ולכן הפונקציה תחזיר את הערך 5 כי יש 5 אפשרויות שונות לטפס על שלבי הסולם. 22. כתבו פונקציה רקורסיבית המקבלת מספר שלם ומציירת שנתות של סרגל כך שהמספר שהתקבל הוא מספר השנתות במרכז הסרגל. דוגמא עבור 3=n: דוגמא עבור 4=n: 46/46